﻿/*
 * KLF Headless Browser
 * Written by Kris Oye <kristianoye@gmail.com>
 * Copyright (C) 2011-2012.  All rights reserved.
 */
namespace KLF.Lib.Browser.DOM
{
    #region Using Statements

    using System;

    #endregion

    abstract public class DOMImplementationSource
    {
        #region DOM Level 3 Compliance

        /// <summary>
        /// A method to request the first DOM implementation that supports 
        /// the specified features. 
        /// </summary>
        /// <param name="features">A string that specifies which features and 
        /// versions are required. This is a space separated list in which each
        /// feature is specified by its name optionally followed by a space and
        /// a version number.
        /// 
        /// This method returns the first item of the list returned by 
        /// getDOMImplementationList.
        /// 
        /// As an example, the string "XML 3.0 Traversal +Events 2.0" will 
        /// request a DOM implementation that supports the module "XML" for 
        /// its 3.0 version, a module that support of the "Traversal" module 
        /// for any version, and the module "Events" for its 2.0 version. 
        /// 
        /// The module "Events" must be accessible using the method 
        /// Node.getFeature() and DOMImplementation.getFeature(). </param>
        /// 
        /// <returns>The first DOM implementation that support the desired 
        /// features, or null if this source has none.</returns>
        public DOMImplementation getDOMImplementation(string features)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// A method to request a list of DOM implementations that support
        /// the specified features and versions, as specified in DOM Features.
        /// </summary>
        /// 
        /// <param name="features">A string that specifies which features and
        /// versions are required. This is a space separated list in which each
        /// feature is specified by its name optionally followed by a space and
        /// a version number. This is something like:
        /// 
        ///     "XML 3.0 Traversal +Events 2.0"</param>
        /// <returns>A list of DOM implementations that support the desired features.</returns>
        public DOMImplementationList getDOMImplementationList(string features)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
